val revision/traverse f insn = 
   case insn of
      ADDI x: f "ADDI" (TERNOP_LRR x)
    | ALNV-PS x: f "ALNV.PS" (QUADOP_LRRR x)
    | BC1F x: f "BC1F" (BINOP_RR x)
    | BC1FL x: f "BC1FL" (BINOP_RR x)
    | BC1T x: f "BC1T" (BINOP_RR x)
    | BC1TL x: f "BC1TL" (BINOP_RR x)
    | BC2F x: f "BC2F" (BINOP_RR x)
    | BC2FL x: f "BC2FL" (BINOP_RR x)
    | BC2T x: f "BC2T" (BINOP_RR x)
    | BC2TL x: f "BC2TL" (BINOP_RR x)
    | BEQL x: f "BEQL" (TERNOP_RRR x)
    | BGEZAL x: f "BGEZAL" (BINOP_RR x)
    | BGEZALL x: f "BGEZALL" (BINOP_RR x)
    | BGEZL x: f "BGEZL" (BINOP_RR x)
    | BGTZL x: f "BGTZL" (BINOP_RR x)
    | BLEZL x: f "BLEZL" (BINOP_RR x)
    | BLTZAL x: f "BLTZAL" (BINOP_RR x)
    | BLTZALL x: f "BLTZALL" (BINOP_RR x)
    | BLTZL x: f "BLTZL" (BINOP_RR x)
    | BNEL x: f "BNEL" (TERNOP_RRR x)
    | C-cond-fmt x: f "C" (TERNOP_CFLRR x)
    | CVT-PS-S x: f "CVT.PS.S" (TERNOP_LRR x)
    | CVT-S-PL x: f "CVT.S.PL" (BINOP_LR x)
    | CVT-S-PU x: f "CVT.S.PU" (BINOP_LR x)
    | DIV x: f "DIV" (BINOP_RR x)
    | DIVU x: f "DIVU" (BINOP_RR x)
    | JR x: f "JR" (UNOP_R x)
    | JR-HB x: f "JR.HB" (UNOP_R x)
    | JALX x: f "JALX" (UNOP_R x)
    | LDC2 x: f "LDC2" (BINOP_RR x)
    | LDXC1 x: f "LDXC1" (BINOP_LR x)
    | LUI x: f "LUI" (BINOP_LR x)
    | LUXC1 x: f "LUXC1" (BINOP_LR x)
    | LWC2 x: f "LWC2" (BINOP_RR x)
    | LWL x: f "LWL" (BINOP_LR x)
    | LWLE x: f "LWLE" (BINOP_LR x)
    | LWR x: f "LWR" (BINOP_LR x)
    | LWRE x: f "LWRE" (BINOP_LR x)
    | LWXC1 x: f "LWXC1" (BINOP_LR x)
    | MADD x: f "MADD" (BINOP_RR x)
    | MADD-fmt x: f "MADD" (QUADOP_FLRRR x)
    | MADDU x: f "MADDU" (BINOP_RR x)
    | MFHI x: f "MFHI" (UNOP_L x)
    | MFLO x: f "MFLO" (UNOP_L x)
    | MOVF x: f "MOVF" (TERNOP_LRR x)
    | MOVF-fmt x: f "MOVF" (TERNOP_FLRR x)
    | MOVN x: f "MOVN" (TERNOP_LRR x)
    | MOVN-fmt x: f "MOVN" (TERNOP_FLRR x)
    | MOVT x: f "MOVT" (TERNOP_LRR x)
    | MOVT-fmt x: f "MOVT" (TERNOP_FLRR x)
    | MOVZ x: f "MOVZ" (TERNOP_LRR x)
    | MOVZ-fmt x: f "MOVZ" (TERNOP_FLRR x)
    | MSUB x: f "MSUB" (BINOP_RR x)
    | MSUB-fmt x: f "MSUB" (QUADOP_FLRRR x)
    | MSUBU x: f "MSUBU" (BINOP_RR x)
    | MTHI x: f "MTHI" (UNOP_R x)
    | MTLO x: f "MTLO" (UNOP_R x)
    | MUL x: f "MUL" (TERNOP_LRR x)
    | MULT x: f "MULT" (BINOP_RR x)
    | MULTU x: f "MULTU" (BINOP_RR x)
    | NMADD-fmt x: f "NMADD" (QUADOP_FLRRR x)
    | NMSUB-fmt x: f "NMSUB" (QUADOP_FLRRR x)
    | PLL-PS x: f "PLL.PS" (TERNOP_LRR x)
    | PLU-PS x: f "PLU.PS" (TERNOP_LRR x)
    | PREFX x: f "PREFX" (BINOP_RR x)
    | PUL-PS x: f "PUL.PS" (TERNOP_LRR x)
    | PUU-PS x: f "PUU.PS" (TERNOP_LRR x)
    | SDXC1 x: f "SDXC1" (BINOP_RR x)
    | SUXC1 x: f "SUXC1" (BINOP_RR x)
    | SWL x: f "SWL" (BINOP_RR x)
    | SWLE x: f "SWLE" (BINOP_RR x)
    | SWR x: f "SWR" (BINOP_RR x)
    | SWRE x: f "SWRE" (BINOP_RR x)
    | SWXC1 x: f "SWXC1" (BINOP_RR x)
    | TEQI x: f "TEQI" (BINOP_RR x)
    | TGEI x: f "TGEI" (BINOP_RR x)
    | TGEIU x: f "TGEIU" (BINOP_RR x)
    | TLTI x: f "TLTI" (BINOP_RR x)
    | TLTIU x: f "TLTIU" (BINOP_RR x)
    | TNEI x: f "TNEI" (BINOP_RR x)
   end
